Interface to index and display geospatial data

ABSTRACT

Example embodiments described herein pertain to a geospatial interface system configured to cause display of geospatial data within a graphical user interface at a client device, receive data points from multiple data sources, unify the data points, and present the unified data points as interactive graphical elements within the graphical user interface, in a presentation layer separate from the geospatial data. In example embodiments, the geospatial interface system may be or include a group of one or more server machines configured to provide one or more geospatial data display, indexing, and management services. A client device may accordingly display a graphical user interface generated by the geospatial interface system.

PRIORITY APPLICATION

This application claims priority to, and is a continuation of U.S.patent application Ser. No. 16/106,505, filed Aug. 21, 2018, whichclaims priority to, and is a continuation of U.S. patent applicationSer. No. 15/258,715, filed Sep. 7, 2016, which claims priority to U.S.Provisional Application Ser. No. 62/270,510, filed Dec. 21, 2015, thedisclosures of which are incorporated herein in their entirety byreference.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to interfacesconfigured to index and display geospatial data. Specifically, exampleembodiments relate to a system to receive, and display geospatial vectordata.

BACKGROUND

A geographic information system is a system designed to capture, store,manipulate, analyze, manage, and present geospatial data. Firstresponders and other professionals and non-professionals in search andrescue groups often use geographic information systems to identify areaswhich may be affected by natural disasters, or other similar events.

An issue which frequently arises in the use of such systems is themanagement and display of high volumes of data, such as vector datareceived from multiple distinct data sources. The data is oftendifficult to decipher and analyze, and as a result, resources may bewasted due to a rapidly changing environment.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate exampleembodiments of the present inventive subject matter and cannot beconsidered as limiting its scope.

FIG. 1 is a network diagram illustrating a network environment suitablefor causing display of a geospatial interface configured to receive andindex geospatial data, according to some example embodiments.

FIG. 2 is a block diagram illustrating components of a geospatialinterface system suitable to receive and index geospatial data,according to some example embodiments.

FIG. 3 is a flowchart illustrating operations of the geospatialinterface system in performing a method for updating a display ofgeospatial data within a geospatial interface, according to some exampleembodiments.

FIG. 4 is a flowchart illustrating operations of the geospatialinterface system in performing a method for updating a display ofgeospatial data within a geospatial interface, according to some exampleembodiments.

FIG. 5 is a flowchart illustrating operations of the geospatialinterface system in performing a method for updating a display ofgeospatial data within a geospatial interface, according to some exampleembodiments.

FIG. 6 is a flowchart illustrating operations of the geospatialinterface system in performing a method for updating a display ofgeospatial data within a geospatial interface, according to some exampleembodiments.

FIG. 7 is an interaction diagram illustrating various exampleinteractions between the geospatial interface system, a source device,and a client device, according to some example embodiments.

FIG. 8 is a diagram illustrating a geospatial interface configured topresent geospatial data, according to some example embodiments.

FIG. 9 is a diagram illustrating a geospatial interface configured topresent geospatial data, according to some example embodiments.

FIG. 10 is a diagram illustrating a geospatial interface configured topresent geospatial data, according to some example embodiments.

FIG. 11 is a diagram illustrating a geospatial interface configured topresent geospatial data, according to some example embodiments.

FIG. 12 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein.

DETAILED DESCRIPTION

Reference will now be made in detail to specific example embodiments forcarrying out the inventive subject matter of the present disclosure. Inthe following description, specific details are set forth in order toprovide a thorough understanding of the subject matter. It shall beappreciated that embodiments may be practiced without some or all ofthese specific details.

Example embodiments described herein pertain to a geospatial interfacesystem configured to cause display of geospatial data within a graphicaluser interface at a client device, receive data points from multipledata sources, unify the data points, and present the unified data pointsas interactive graphical elements within the graphical user interface,in a presentation layer separate from the geospatial data. In exampleembodiments, the geospatial interface system may be or include a groupof one or more server machines configured to provide one or moregeospatial data display, indexing, and management services. A clientdevice may accordingly display a graphical user interface generated bythe geospatial interface system.

Examples merely typify possible variations. Unless explicitly statedotherwise, components and functions are optional and may be combined orsubdivided, and operations may vary in sequence or be combined orsubdivided. In the following description, for purposes of explanation,numerous specific details are set forth to provide a thoroughunderstanding of example embodiments. It will be evident to one skilledin the art, however, that the present subject matter may be practicedwithout these specific details.

The geospatial interface system is configured (e.g., by one or moresuitable modules that include one or more processors) to cause displayof geospatial data (e.g., map images, a base layer with a coordinateplane) within a graphical user interface at a client device, receivedata points from data sources, and overlay graphical representations ofthe data points at locations on the base layer of the geospatial databased on metadata of the data points and a coordinate reference systemof the map itself. The data points may include metadata comprisingvector and temporal data, as well as identification data. In someembodiments, the data point may additionally include styling data thatdictates stylistic and visual elements of the geospatial data useable togenerate a raster image (rather than actually storing a raster image).Vector data comes in the form of points and lines that are geometricallyand mathematically associated. The data points therefor may be storedand displayed based on a set of coordinates. For example, atwo-dimensional point is stored as (x, y), while a line segment isstored as a series of point pairs, where each pair represents a straightline segment, for example, (x1, y1) and (x2, y2) indicating a line from(x1, y1) to (x2, y2). The vector data is assembled by the geospatialinterface system based on the temporal data (e.g., a time series).Vector data produces smaller file size than, for example, a rasterimage, because a raster image needs space for all pixels while onlypoint coordinates are stored in vector representation. The temporal datamay indicate a time stamp, frequency, or interval in which the data isreceived.

In some example embodiments, the metadata of the data points may alsoinclude identification and text data, such as a description associatedwith the data point. For example, a data point may include textindicating a label for the data point (e.g., EVACUATION ZONE), or afamily identifier, to describe a source of the data point (e.g.,AMBULANCE-1). In further embodiments, the text data may include adescription or summarization to be transmitted to the geospatialinterface system. Upon receiving the data points from the data source(or sources), the geospatial interface system links the data points toother associated data points displayed within the graphical userinterface. For example, data points may be associated based on having acommon source, a common family identifier, or based on a user input tolink two or more data points. Having linked the associated data points,the geospatial interface system updates the display.

In some example embodiments, the geospatial interface system may befurther configured to facilitate searching sets of data points displayedwithin the graphical user interface. For example, consider an exampleembodiment where the geospatial data displayed within the graphical userinterface comprises a map image and a base layer with a coordinatesystem, and the data points are overlaid at locations on the base layerbased on associated vector data. To search for and identify relevantdata points, a user may provide an input directly into the graphicaluser interface, specifying a boundary, or a point or line with a radius,to specify a search region. In response, the geospatial interface systemcauses display of a set of data points located within the specifiedregion.

In further example embodiments, the user may specify search criteria,such as temporal constraints (e.g., within the last hour, day, week,month, or the last ten data points from this source) or search terms, inorder to identify only those data points received within the specifiedspan of time, frequency, or chronology. The geospatial interface systemmay then identify data points having temporal data within the specifiedtime frame, or text data matching the search terms to display within thegraphical user interface.

To further facilitate the ability of the geospatial interface system toindex and display data points received from various data sources, thegeospatial interface system may present an interface to enable a user toassign a family identifier, as well as a data retrieval interval to oneor more data sources. In such embodiments, data received from a datasource may then be automatically linked with other data points of thesame family (e.g., based on the family identifier). Additionally, thegeospatial interface system may ping the data source at intervalsdefined by the user input to retrieve data points.

As an illustrative example from a user perspective, suppose a user(e.g., a first responder) launches an application configured to interactwith the geospatial interface system on a client device, and thegeospatial interface system generates and causes display of a graphicaluser interface at the client device, wherein the graphical userinterface includes a presentation of a map image (e.g., a regionaffected by a natural disaster) over a base layer with a coordinatesystem, with a set of graphical representations of data points receivedfrom data sources (e.g., search and rescue teams, firetrucks,ambulances) overlaid on the map image at various locations based onassociated metadata. The data points may be represented as color codedpoints, such that each family identifier includes a corresponding color(e.g., blue indicates a particular ambulance or set of ambulances, redindicates a firetruck or set of firetrucks).

The user may select any single data point, and in response to receivingthe selection, the geospatial interface system causes display of adialogue box containing display criteria. For example, the displaycriteria may include temporal constraints for the associated familyidentifier. The user may wish to display the last ten data pointsreceived from a particular family indictor (or individual data source),or alternatively, may choose to define a range of time (e.g., from 12:00PM to 3:00 PM). In response to receiving the temporal constraints forthe family identifier, the geospatial interface system updates thegraphical user interface to display only the set of data points whichfit within the temporal constraint, based on associated metadata (e.g.,the temporal data). In some embodiments, the geospatial interface systemmay also update the map image displayed to correspond to the definedtemporal constraint, by including only those images which were takenduring the span of time.

Alternatively, the user may define a boundary on the map image, bydrawing a polygon on the map image, or placing a point or line segment,and defining a radius from the point or line segment. In response toreceiving the boundary, the geospatial interface system displays alldata points which exist within the enclosed region or boundary, based ontheir metadata. For example, the user may want information describinghow many first responder had been to a particular area, and when thefirst responders were there. By defining a boundary enclosing theregion, the user can then access the relevant data. For example, thegeospatial interface system may receive and index data points pertainingto a location from a data source (e.g., GPS module), wherein the datapoints include vector and temporal data. At a later time, to determinewhen the last time data points were received from the area, the user maydraw a radius around the location. In response, the geospatial interfacesystem retrieves and buckets and presents each data point by time (e.g.,based on the temporal data) in order to convey temporal elements of thedata.

Now suppose the user wants to notify all personnel that a new evacuationzone has been created. The user may define a region by placing aboundary, or placing a point on the map image, and assigning text datato the point or boundary (e.g., “Evacuate to this area”). The geospatialinterface system may then transmit a notification to personnel, andcause display of the point or boundary with the text data at clientdevices of personnel who are also accessing the geospatial interfacesystem. In further example embodiments, the user may define specificpersonnel associated with data sources (e.g., an ambulance) to notify.

FIG. 1 is a network diagram illustrating a network environment 100suitable for operating a geospatial interface system 142, according tosome example embodiments. A networked system 102, provides server-sidefunctionality, via a network 104 (e.g., an Intranet, the Internet or aWide Area Network (WAN)), to one or more clients. FIG. 1 illustrates,for example, a web client 112 (e.g. a web browser), clientapplication(s) 114, and a programmatic client 116 executing onrespective client device 110. It shall be appreciated that although thevarious functional components of the system 100 are discussed in thesingular sense, multiple instances of one or more of the variousfunctional components may be employed.

An Application Program Interface (API) server 120 and a web server 122are coupled to, and provide programmatic and web interfaces respectivelyto, one or more application server 140. The application server(s) 140host the geospatial interface system 142. The application servers 140are, in turn, shown to be coupled to one or more database servers 124that facilitate access to one or more databases 126.

The geospatial interface system 142 is a server application with a webfront-end that causes display of geospatial data, including for examplemap images and a base layer with a coordinate system, within a graphicaluser interface at a client device 110. The geospatial interface system142 receives and indexes data points received from data sources, anddisplays graphical representations of the data points within thegraphical user interface. For example, the geospatial information system142 may be configured to receive data points, determine a location on abase layer to overlay a graphical representation of the data point, andcause display of the graphical representation at the client device 110.While the geospatial interface system 142 is shown in FIG. 1 to formpart of the networked system 102, it will be appreciated that, inalternative embodiments, the geospatial interface system 142 may formpart of a system that is separate and distinct from the networked system102.

FIG. 1 also illustrates a client application 132, executing on a sourcedevice 130, as having programmatic access to the networked system 102via the programmatic interface provided by the API server 120. Thesource device 130 may, for example, be a source of geospatial datauseable by the geospatial interface system 142.

FIG. 2 is a block diagram illustrating components of a geospatialinterface system 142 suitable to generate and cause display ofgeospatial data within a graphical user interface, receive data pointsfrom multiple data sources, index and unify the data points by linkingthem with associated data points within the geospatial interface system142, and cause display of graphical representations of the data pointswithin the graphical user interface, according to some exampleembodiments. As is understood by skilled artisans in the relevantcomputer and Internet-related arts, each component (e.g., a module orengine) illustrated in FIG. 2 represents a set of executable softwareinstructions and the corresponding hardware (e.g., memory and processor)for executing the instructions. The geospatial interface system 142 isshown as including a data retrieval module 202, an interface 204, and anindexing module 206, each of which is configured and communicativelycoupled to communicate with the other modules (e.g., via a bus, sharedmemory, or a switch).

Data points are obtained via the data retrieval module 202, from one ormore data sources (e.g., the source device 130 or the client device110). In such instances, the data retrieval module 202 may receive arequest to retrieve geospatial data from the source device 130, or fromthe client device 110. For example, a user at the client device 110 maydefine a data retrieval interval in the geospatial interface system 142in which to receive data from the source device 130. The data retrievalinterval may include a frequency, and an identifier of the source device130. Responsive to receiving the data retrieval interval, the dataretrieval module 202 retrieves data points from the source device 130.In further example embodiments, the data retrieval module 220 mayrequest data points from the source source device 130 based onindividual data retrieval requests received from the user at the clientdevice 110.

The data retrieval module 202 provides the data points to the indexingmodule 206. The indexing module 206 is configured to identify and indexthe data point, based on metadata associated with the data point. Forexample, the indexing module 206 may assign all data points receivedfrom a particular data source (e.g., source device 130) to a particularfamily identifier.

After indexing the data points, the data retrieval module 202 providesthe indexed data points to the interface module 204. The interfacemodule 204 is configured to overlay a graphical representation of thedata point at a location on the geospatial data within the graphicaluser interface. The interface module 204 may extract vector data,temporal data, and text data from the data point in order to generateand place the graphical representation.

Any one or more of the modules described may be implemented usinghardware alone (e.g., one or more of the processors 212 of a machine) ora combination of hardware and software. For example, any moduledescribed of the geospatial interface system 142 may physically includean arrangement of one or more of the processors 212 (e.g., a subset ofor among the one or more processors 212 of the machine) configured toperform the operations described herein for that module. As anotherexample, any module of the geospatial interface system 142 may includesoftware, hardware, or both, that configures an arrangement of one ormore processors 212 (e.g., among the one or more processors 212 of themachine) to perform the operations described herein for that module.Accordingly, different modules of the geospatial interface system 142may include and configure different arrangements of such processors 212or a single arrangement of such processors 212 at different points intime. Moreover, any two or more modules of the geospatial interfacesystem 142 may be combined into a single module, and the functionsdescribed herein for a single module may be subdivided among multiplemodules. Furthermore, according to various example embodiments, modulesdescribed herein as being implemented within a single machine, database,or device may be distributed across multiple machines, databases, ordevices.

FIG. 3 is a flowchart illustrating operations of the geospatialinterface system 142 in performing a method 300 of indexing and causingdisplay of a data point, according to some example embodiments. Themethod 300 may be embodied in computer-readable instructions forexecution by one or more processors such that the steps of the method300 may be performed in part or in whole by the components of thegeospatial interface system 142; accordingly, the method 300 isdescribed below by way of example with reference thereto. However, itshall be appreciated that the method 300 may be deployed on variousother hardware configurations and is not intended to be limited to thegeospatial interface system 142.

At operation 305, the interface module 204 causes display of geospatialdata within a graphical user interface at a client device. Thegeospatial data may include, for example, a set of map images, a baselayer with an associated coordinate plane, and a graphicalrepresentation of a first data point received from a data source (e.g.,source device 130). In some embodiments, the graphical representation ofthe data point may be color coded based on an associated familyidentifier.

At operation 310, the data retrieval module 202 receives a second datapoint from a data source (e.g., source device 130). The second datapoint may include associated metadata, including, for example, vectordata defining coordinates of the data point with respect to the baselayer, temporal data, and text data including, for example, anidentifier of the data source, as well as notes and other text. Uponreceiving the second data point via the data retrieval module 202, theindex module 206 extracts the metadata of the second data point todetermine a location to overlay a graphical representation of the seconddata point on the base layer, and to identify an appropriate familyidentifier to assign to the second data point (e.g., based on theidentifier of the data source).

As shown in FIG. 4, one or more operations 325, 330, and 335 may beperformed as part (e.g., a precursor task, a subroutine, or portion) ofmethod 300, according to some example embodiments. The method 300 asshown in FIG. 4 illustrates a method for defining a boundary to retrievea set of data points.

Operation 325 may be performed by the interface module 204. Theinterface module 204 may receive a user input defining a boundary withinthe base layer of the geospatial data. For example, a user may draw aradius or polygon over the base layer in order to define a boundary. Inresponse, at operation 330, the interface module 204 identifies a set ofdata points located within the defined boundary.

In some embodiments, the user may simply select a point, or draw a linesegment, and define a distance from the point or line segment in whichto set a boundary. In further example embodiments, the user may provideadditional search criteria, such as a family identifier. In response,the interface module 204 identifies and presents a set of data pointsbased on the boundary and search criteria.

At operation 335, having identified the set of data points within theboundary, the interface module 204 causes display of the set ofinterface elements at locations overlaid on top of the base layer at theclient device. In some example embodiments, the interface module 204also causes display of a dialogue box including additional details aboutthe identified set of data points. For example, the dialogue box mayinclude an indication of a total number of data points which have beenreceived from the defined region, from other data sources or familyidentifiers, as well as a total amount of time spent in the definedregion.

As show in FIG. 5, one or more operations 345, 350, 355, and 360 may beperformed as a part (e.g., a precursor task, a subroutine, or portion)of the method 300, according to some example embodiments. The method 300illustrated in FIG. 5 depicts operations to define a temporalconstraint, and displaying a set of data points based on the temporalconstraint.

Operation 345 may be performed by the interface module 204. At operation345, the interface module 204 receives a selection of a first data pointoverlaid on the base layer of the geospatial data at the client device110. For example, a user at client device 110 may select the first datapoint via a cursor element, or by a tactile input to the graphical userinterface.

In response to receiving the selection of the data point, at operation350, the interface module 204 causes display of an interface controlelement configured to receive a temporal constraint (e.g., a dialoguebox) within the graphical user interface. In some example embodiments,the interface control element may have a set of one or more searchfields in addition to the temporal constraint to provide searchcriteria, such as text data, family identifiers, and so on. The temporalconstraint may be displayed as a drop down menu, or a text field,wherein a user may define the temporal constraints. Temporal constraintsmay include a period of time (e.g., a range), a specific date or time(e.g., a point in time), a chronology (e.g., the last ten data pointsreceived), as well as an interval (e.g., data points received within aminute before or after a time). At operation 355, the interface module204 receives a limit of the temporal constraint via the interfacecontrol element.

Having defined a limit to the temporal constraint, at operation 360 theinterface module 204 updates the display of the geospatial data toinclude a set of data points based on the temporal constraints and thefamily identifier of the first data point selected. To identify the setof data points, the interface module 204 may provide the temporalconstraints to the indexing module 206 which then searches the temporaldata of the data points associated with the family identifier. Uponidentifying the set of data points which fit with the temporalconstraints, the interface module 204 updates the display to includeonly those data points identified.

In some example embodiments, the geospatial interface system 142 alsoenables a user at client device 110 to generate a curated display, andpresent the curated display to a subservient device or set of devices,including for example, the source device 130, as well as a main displaylinked to the client device 110 (e.g., a separate presentation screen).As show in FIG. 6, one or more operations 365, 370, 375, and 380 may beperformed as a part (e.g., a precursor task, a subroutine, or portion)of the method 300, according to some example embodiments. The method 300illustrated in FIG. 6 depicts the operations to generate and present acurated view.

Operation 365 may be performed by the interface module 204. Theinterface module 204 receives a selection of a first data point fromclient device 110. In some example embodiments, the selection mayinclude a set of data points, or a selection of a boundary region. Inresponse to receiving the selection, at operation 370, the interfacemodule 204 causes display of an interface control element configured toreceive a curated display. The interface control element may include oneor more interface elements to receive curation data, such as a drop downmenu, text box, image upload field, as well as a priority indicator.

At operation 375, the interface control module 204 receives curationdata via the interface control element. The curation data may include,for example, text and image data. For example, a user may upload one ormore images to display at the subservient devices, as well as textassociated with each image, or with the set of images. At operation 380,in response to receiving the curation data, the interface control moduleupdates the display of the geospatial data to include the curated view.For example, the interface module 204 may display the curated view at aset of subservient devices (e.g., client device 130), or at a separatepresentation screen.

FIG. 7 is an interaction diagram depicting example exchanges between thegeospatial interface system 142, source device 130, and client device110, consistent with some example embodiments. At operation 705, theclient device 705 receives an input into a graphical user interfacegenerated by the geospatial interface system 142, to define a family ofdata point. The definition of the family of data points may include oneor more data sources (e.g., source device 130), and a family identifier.In some example embodiments, the family definition may also include afrequency, or data retrieval interval to assign to the data sources. Thedata retrieval interval specifies a rate at which data points areretrieved from the data source.

At operation 710, the geospatial interface system 142 receives thedefinition of the family, and assigns the family identifier to the oneor more data sources identified. By doing so, data points received fromthe one or more data sources are indexed by the geospatial interfacesystem 142 based on the family identifier. At operation 715, the datasource (e.g., source device 130) collects vector data and temporal datato be transmitted to the geospatial interface system 142.

At operations 720, the geospatial interface system 142 receives a datapoint from the source device 130, based on the defined interval. Thedata point comprises the temporal data and the vector data, such thatthe vector data defines coordinates of the data point, and the temporaldata defines a time series associated with the data point. In someexample embodiments, the data point may also include image and textdata. Upon receiving the data at the geospatial interface system 142, atoperation 725, the index module 206 indexes and unifies the data bylinking it with other associated data points. Data points may beassociated based on sharing a common family identifier, or in someexample embodiments may be linked based on user input. In furtherembodiments, a user may specify temporal or vector data attributes tolink data points based on. For example, a user may specify that all datapoints received in a window of time are linked.

Having indexed and unified the data points, at operation 730, thegeospatial interface system 142 overlays a graphical representation ofthe data point on the base layer at the client device 110, at a locationbased on the associated vector data.

FIG. 7 is a diagram illustrating a user interface (e.g., GIS interface700) for presenting geospatial data 702 usable by the GIS 142 togenerate and display a tile cache, according to some exampleembodiments. The GIS interface 700 is shown to include an imagery searchfield 710, configured to enable a user to search for, select, retrieve,and upload images (e.g., geospatial data 702) into the GIS 142. Thegeospatial data 702 is usable by the GIS 142 to generate and cause thedisplay of a tile cache, according to some example embodiments. Thegeospatial data 702 may include a single image, or multiple images(e.g., captured by an aerial surveillance drone or satellite) depictinga geographic region. The geospatial data 702 may further includerepresentations of unique landmarks and features (e.g., 704, 706, and708).

In some example embodiments, the geospatial data 702 include ahigh-resolution image obtained via aerial surveillance (e.g., drone,helicopter, airplane, satellite) and may be transmitted to a serveraccessible by the GIS 142 (e.g., the third-party server 130, thedatabase server 124). In further embodiments, the geospatial data may bereceived by a client device 110, and uploaded into a server accessibleby the GIS 142 via the GIS interface 700. In further embodiments, thegeospatial data 702 may reside on the client device 110, and may beuploaded to the servers (e.g., database servers 124) of the GIS 142.

A user accessing the GIS 142 on a client device 110 is presented withthe GIS interface 700, including the imagery search field 710. The usermay provide the imagery search field 710 with search criteria (e.g., afile name, file source) in order to retrieve one or more images and datato be uploaded into the GIS 142, and to generate an present a tile cachebased on the uploaded image (e.g., geospatial data 702).

FIG. 8 depicts an exemplary graphical user interface 800 generated bythe geospatial interface system 142, configured to display geospatialdata including a map image 802, a base layer, and one or more datapoints 804 received from various data sources. In an example embodiment,data points are received from various data sources (e.g., source device130) at the geospatial interface system 142, indexed based on metadataassociated with the data points (e.g., vector data, temporal data), anddisplayed within the graphical user interface 800 at a client device110. In further example embodiments, the display may include a graphelement 806 configured to display a time series of the data points.

FIG. 9 depicts an exemplary graphical user interface 900 generated bythe geospatial interface system 142, configured to display geospatialdata including a map image 902, a base layer, and one or more datapoints 904 received from various data sources. In an example embodiment,a user of client device 110 may select a data point (e.g., via a cursorelement 906), and in response, the geospatial interface system 142causes display of an interface control element 908 configured to receivetemporal constraints (e.g., temporal constraints 910). The user mayprovide temporal constraints via the interface control element, and inresponse, the geospatial interface system 142 may update the display ofthe graphical user interface 900 to include the set of data points 904based on the temporal constraints specified (e.g., based on the temporaldata of the data points). For example, a user may specify a range, ortime period, and in response, the geospatial interface system 142 mayupdate the display to include only a set of data points which includestemporal data within the defined range. In further example embodiments,the user may specify a chronology (e.g., the last ten data points), andin response the geospatial interface system 142 updates to display onlythe last ten data points received.

FIG. 10 depicts an exemplary graphical user interface 1000 generated bythe geospatial interface system 142, configured to display geospatialdata including a map image 1002, a base layer, and one or more datapoints (e.g., data point 1004) received from various data sources. Insome example embodiments, the geospatial interface system 142 displaysdata point labels (e.g., data point label 1010) for each data point. Inan example embodiment, the geospatial interface system 142 may displayassociated data points (e.g., linked data points, data points withcommon family identifier) by connecting the associated data points withline segments (e.g., line segment 1006). In further example embodiments,the line segments may include an indicator 1008 of a direction ofmovement.

FIG. 11 depicts an exemplary graphical user interface 1100 generated bythe geospatial interface system 142, configured to display geospatialdata including a map image 1102, a base layer, and one or more datapoints (e.g., data point 1104) received from various data sources. In anexample embodiment, the geospatial interface system 142 presents anotification (e.g., notification 1106, notification 1108) at the clientdevice 110 in response to receiving a data point from a data source. Forexample, the geospatial interface system 142 may receive a notificationrequest from the client device 110, wherein the notification requestincludes an indication of an event, and a notification distribution. Inresponse, upon detecting the occurrence of the event (e.g., a datasource transmits a data point), the geospatial interface system 142causes display of notifications 1106 at the client device 110, as wellas a set of additional client devices defined by the notificationdistribution. For example, the user may configure the notification to bedistributed to a specific set of devices.

FIG. 12 is a block diagram illustrating components of a machine 1200,according to some example embodiments, able to read instructions 1224from a machine-readable medium 1222 (e.g., a non-transitorymachine-readable medium, a machine-readable storage medium, acomputer-readable storage medium, or any suitable combination thereof)and perform any one or more of the methodologies discussed herein, inwhole or in part. Specifically, FIG. 12 shows the machine 1200 in theexample form of a computer system (e.g., a computer) within which theinstructions 1224 (e.g., software, a program, an application, an applet,an app, or other executable code) for causing the machine 1200 toperform any one or more of the methodologies discussed herein may beexecuted, in whole or in part.

In alternative embodiments, the machine 1200 operates as a standalonedevice or may be communicatively coupled (e.g., networked) to othermachines. In a networked deployment, the machine 1200 may operate in thecapacity of a server machine or a client machine in a server-clientnetwork environment, or as a peer machine in a distributed (e.g.,peer-to-peer) network environment. The machine 1200 may be a servercomputer, a client computer, a PC, a tablet computer, a laptop computer,a netbook, a cellular telephone, a smartphone, a set-top box (STB), apersonal digital assistant (PDA), a web appliance, a network router, anetwork switch, a network bridge, or any machine capable of executingthe instructions 1224, sequentially or otherwise, that specify actionsto be taken by that machine. Further, while only a single machine isillustrated, the term “machine” shall also be taken to include anycollection of machines that individually or jointly execute theinstructions 1224 to perform all or part of any one or more of themethodologies discussed herein.

The machine 1200 includes a processor 1202 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 1204, and a static memory 1206, which areconfigured to communicate with each other via a bus 1208. The processor1202 may contain solid-state digital microcircuits (e.g., electronic,optical, or both) that are configurable, temporarily or permanently, bysome or all of the instructions 1224 such that the processor 1202 isconfigurable to perform any one or more of the methodologies describedherein, in whole or in part. For example, a set of one or moremicrocircuits of the processor 1202 may be configurable to execute oneor more modules (e.g., software modules) described herein. In someexample embodiments, the processor 1202 is a multicore CPU (e.g., adual-core CPU, a quad-core CPU, or a 128-core CPU) within which each ofmultiple cores is a separate processor that is able to perform any oneor more of the methodologies discussed herein, in whole or in part.Although the beneficial effects described herein may be provided by themachine 1200 with at least the processor 1202, these same effects may beprovided by a different kind of machine that contains no processors(e.g., a purely mechanical system, a purely hydraulic system, or ahybrid mechanical-hydraulic system), if such a processor-less machine isconfigured to perform one or more of the methodologies described herein.

The machine 1200 may further include a graphics display 1210 (e.g., aplasma display panel (PDP), a light emitting diode (LED) display, aliquid crystal display (LCD), a projector, a cathode ray tube (CRT), orany other display capable of displaying graphics or video). The machine1200 may also include an input/output device 1212 (e.g., a keyboard orkeypad, a mouse, or a trackpad), a storage unit 1216, an audiogeneration device 1218 (e.g., a sound card, an amplifier, a speaker, aheadphone jack, or any suitable combination thereof), and a networkinterface device 1220.

The storage unit 1216 includes the machine-readable medium 1222 (e.g., atangible and non-transitory machine-readable storage medium) on whichare stored the instructions 1224 embodying any one or more of themethodologies or functions described herein. The instructions 1224 mayalso reside, completely or at least partially, within the main memory1204, within the processor 1202 (e.g., within the processor's cachememory), within the static memory 1206, or all three, before or duringexecution thereof by the machine 1200. Accordingly, the main memory 1204and the processor 1202 may be considered machine-readable media (e.g.,tangible and non-transitory machine-readable media). The instructions1224 may be transmitted or received over a network 1226 via the networkinterface device 1220. For example, the network interface device 1220may communicate the instructions 1224 using any one or more transferprotocols (e.g., hypertext transfer protocol (HTTP)).

As used herein, the term “memory” refers to a machine-readable mediumable to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 1222 is shown in an example embodiment to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storethe instructions 1224. The term “machine-readable medium” shall also betaken to include any medium, or combination of multiple media, that iscapable of storing the instructions 1224 for execution by the machine1200, such that the instructions 1224, when executed by one or moreprocessors of the machine 1200 (e.g., processor 1202), cause the machine1200 to perform any one or more of the methodologies described herein,in whole or in part. Accordingly, a “machine-readable medium” refers toa single storage apparatus or device, as well as cloud-based storagesystems or storage networks that include multiple storage apparatus ordevices. The term “machine-readable medium” shall accordingly be takento include, but not be limited to, one or more tangible andnon-transitory data repositories (e.g., data volumes) in the exampleform of a solid-state memory chip, an optical disc, a magnetic disc, orany suitable combination thereof. A “non-transitory” machine-readablemedium, as used herein, specifically does not include propagatingsignals per se. In some example embodiments, the instructions 1224 forexecution by the machine 1200 may be communicated by a carrier medium.Examples of such a carrier medium include a storage medium (e.g., anon-transitory machine-readable storage medium, such as a solid-statememory, being physically moved from one place to another place) and atransient medium (e.g., a propagating signal that communicates theinstructions 1224).

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute softwaremodules (e.g., code stored or otherwise embodied on a machine-readablemedium or in a transmission medium), hardware modules, or any suitablecombination thereof. A “hardware module” is a tangible (e.g.,non-transitory) unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule may include software encompassed within a CPU or otherprogrammable processor. It will be appreciated that the decision toimplement a hardware module mechanically, in dedicated and permanentlyconfigured circuitry, or in temporarily configured circuitry (e.g.,configured by software) may be driven by cost and time considerations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, and such a tangible entity may bephysically constructed, permanently configured (e.g., hardwired), ortemporarily configured (e.g., programmed) to operate in a certain manneror to perform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a CPU configured by software to become aspecial-purpose processor, the CPU may be configured as respectivelydifferent special-purpose processors (e.g., each included in a differenthardware module) at different times. Software (e.g., a software module)may accordingly configure one or more processors, for example, toconstitute a particular hardware module at one instance of time and toconstitute a different hardware module at a different instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. Accordingly, the operations described herein may be at leastpartially processor-implemented, since a processor is an example ofhardware. For example, at least some operations of any method may beperformed by one or more processor-implemented modules. As used herein,“processor-implemented module” refers to a hardware module in which thehardware includes one or more processors. Moreover, the one or moreprocessors may also operate to support performance of the relevantoperations in a “cloud computing” environment or as a “software as aservice” (SaaS). For example, at least some of the operations may beperformed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

The performance of certain operations may be distributed among the oneor more processors, whether residing only within a single machine ordeployed across a number of machines. In some example embodiments, theone or more processors or hardware modules (e.g., processor-implementedmodules) may be located in a single geographic location (e.g., within ahome environment, an office environment, or a server farm). In otherexample embodiments, the one or more processors or hardware modules maybe distributed across a number of geographic locations.

Some portions of the subject matter discussed herein may be presented interms of algorithms or symbolic representations of operations on datastored as bits or binary digital signals within a machine memory (e.g.,a computer memory). Such algorithms or symbolic representations areexamples of techniques used by those of ordinary skill in the dataprocessing arts to convey the substance of their work to others skilledin the art. As used herein, an “algorithm” is a self-consistent sequenceof operations or similar processing leading to a desired result. In thiscontext, algorithms and operations involve physical manipulation ofphysical quantities. Typically, but not necessarily, such quantities maytake the form of electrical, magnetic, or optical signals capable ofbeing stored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

1. (canceled)
 2. A system comprising: one or more processors; and amemory storing instructions that, when executed by at least oneprocessor among the one or more processors, causes the system to performoperations comprising: generating an interface that comprises apresentation of a map image, the presentation of the map image includinga set of data points at locations within the map image; presenting aninterface control element within the interface, the interface controlelement comprising a display of a range of values; receiving an inputthat selects a subset of the range of values; and filtering a portion ofthe set of data points from the presentation of the map image based onthe input that selects the subset of the range of values.
 3. The systemof claim 2, wherein the set of data points include a first data points,and the operations further comprise: receiving a selection of the firstdata point, the first data point comprising a data attribute; presentingthe interface control element in response to the selection of the firstdata point; and wherein the filtering the portion of the set of datapoints is based on the subset of the range of values and the dataattribute of the first data. point.
 4. The system of claim wherein therange of values comprises a time period.
 5. The system of claim 2,wherein the operations further comprise: causing display of avisualization of a distribution of the filtered set of data points. 6.The system of claim 2, wherein the set of data points comprisetimestamps, and wherein the operations further comprise: determining atrajectory based on the timestamps of the filtered set of data points;and causing display of a direction indicator based on the trajectory. 7.The system of claim 2, wherein the set of data points include a firstdata point that comprises a data attribute and a display property basedon the data attribute, and the operations further comprise: receiving asecond data point that comprises the data attribute of the first datapoint; assigning the display property of the first data point to thesecond data point; and presenting the second data point among the set ofdata points based on the display property.
 8. The system of claim 2,wherein the operations further comprise: identifying a common attributeamong a subset of the filtered set of data points; and linking thesubset of the filtered set of data points with line segments based onthe common attribute.
 9. A method comprising: generating an interfacethat comprises a presentation of a map image, the presentation of themap image including a set of data points at locations within the mapimage; presenting an interface control element within the interface, theinterface control element comprising a display of a range of values;receiving an input that selects a subset of the range of values; andfiltering a portion of the set of data points from the presentation ofthe map image based on the input that selects the subset of the range ofvalues.
 10. The method of claim 9, wherein the set of data pointsinclude a first data points, and the method further comprises: receivinga selection of the first data point, the first data point comprising adata attribute; presenting the interface control element in response tothe selection of the first data point; and wherein the filtering theportion of the set of data points is based on the subset of the range ofvalues and the data attribute of the first data point.
 11. of claim 9,wherein the range of values comprises a time period.
 12. The method ofclaim 9, wherein the method further comprises: causing display of avisualization of a distribution of the filtered set of data points. 13.The method of claim 9, wherein the set of data points comprisetimestamps, and wherein the method further comprises: determining atrajectory based on the timestamps of the filtered set of data points;and causing display of a direction indicator based on the trajectory.14. The method of claim 9, wherein the set of data points include afirst data point that comprises a data attribute and a display propertybased on the data attribute, and the method further comprises: receivinga second data point that comprises the data attribute of the first datapoint; assigning the display property of the first data point to thesecond data point; and presenting the second data point among the set ofdata points based on the display property.
 15. The method of claim 9,wherein the method further comprises: identifying a common attributeamong a subset of the filtered set of data points; and linking thesubset of the filtered set of data points with line segments based onthe common attribute.
 16. A non-transitory machine-readable storagemedium comprising instructions that, when executed by one or moreprocessors of a machine, cause the machine to perform operationscomprising: generating an interface that comprises a presentation of amap image, the presentation of the map image including a set of datapoints at locations within the map image; presenting an interfacecontrol element within the interface, the interface control elementcomprising a display of a range of values; receiving an input thatselects a subset of the range of values; and filtering a portion of theset of data points from the presentation of the map image based on theinput that selects the subset of the range of values.
 17. Thenon-transitory machine-readable storage medium of claim 16, wherein theset of data points include a first data points, and the operationsfurther comprise: receiving a selection of the first data point, thefirst data point comprising a data attribute; presenting the interfacecontrol element in response to the selection of the first data point;and wherein the filtering the portion of the set of data points is basedon the subset of the range of values and the data attribute of the firstdata point.
 18. The non-transitory machine-readable storage medium ofclaim 16, wherein the range of values comprises a time period.
 19. Thenon-transitory machine-readable storage medium of claim 16, wherein theoperations further comprise: causing display of a visualization of adistribution of the filtered set of data points.
 20. The non-transitorymachine-readable storage medium of claim 16, wherein the set of datapoints comprise timestamps, and wherein the operations further comprise:determining a trajectory based on the timestamps of the filtered set ofdata points; and causing display of a direction indicator based on thetrajectory.
 21. The non-transitory machine-readable storage medium ofclaim 16, wherein the set of data points include a first data point thatcomprises a data attribute and a display property based on the dataattribute, and the operations further comprise: receiving a second datapoint that comprises the data attribute of the first data point;assigning the display property of the first data point to the seconddata point; and presenting the second data point among the set of datapoints based on the display property.